home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / sos3-2.lha / src / cfe / cfe_yacc.c < prev    next >
C/C++ Source or Header  |  1992-01-23  |  49KB  |  1,490 lines

  1. # define name_tok 257
  2. # define number_tok 258
  3. # define abstract_tok 259
  4. # define class_tok 260
  5. # define definite_tok 261
  6. # define enum_tok 262
  7. # define extern_tok 263
  8. # define friend_tok 264
  9. # define local_tok 265
  10. # define operator_tok 266
  11. # define private_tok 267
  12. # define protected_tok 268
  13. # define public_tok 269
  14. # define schema_tok 270
  15. # define set_tok 271
  16. # define static_tok 272
  17. # define typedef_tok 273
  18. # define union_tok 274
  19. # define with_tok 275
  20. # define l_abr_tok 276
  21. # define r_abr_tok 277
  22. # define l_br_tok 278
  23. # define r_br_tok 279
  24. # define l_brc_tok 280
  25. # define r_brc_tok 281
  26. # define l_par_tok 282
  27. # define r_par_tok 283
  28. # define ampersand_tok 284
  29. # define ampersand_assign_tok 285
  30. # define and_tok 286
  31. # define assign_tok 287
  32. # define bar_tok 288
  33. # define bar_assign_tok 289
  34. # define circumflex_tok 290
  35. # define circumflex_assign_tok 291
  36. # define colon_tok 292
  37. # define comma_tok 293
  38. # define equal_tok 294
  39. # define exclam_tok 295
  40. # define greater_equal_tok 296
  41. # define less_equal_tok 297
  42. # define minus_tok 298
  43. # define minus_assign_tok 299
  44. # define not_equal_tok 300
  45. # define or_tok 301
  46. # define percent_tok 302
  47. # define percent_assign_tok 303
  48. # define plus_tok 304
  49. # define plus_assign_tok 305
  50. # define rshift_assign_tok 306
  51. # define lshift_assign_tok 307
  52. # define slash_tok 308
  53. # define slash_assign_tok 309
  54. # define star_tok 310
  55. # define star_assign_tok 311
  56. # define semicolon_tok 312
  57.  
  58. # line 113 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  59.  
  60. #include <libc.h>
  61.  
  62. #include "sys.h"
  63. #include "smg.h"
  64. #include "cfe_err.h"
  65. #include "mta_sos.h"
  66. #include "cfe.h"
  67. #include "cfe_yacc.h"
  68.  
  69. typedef union {
  70.       sos_Bool                b;
  71.       sos_Int                i;
  72.       sos_Cstring                s;
  73.           sos_Imports                imp;
  74.           sos_String                str;
  75.           sos_String_List            str_l;
  76.       sos_Schema_type_List             td_l;
  77.           sos_Enum_type                etd;
  78.           sos_Class_type            ctd;
  79.           sos_Gen_param                gp;
  80.           sos_Gen_param_List            gp_l;
  81.           sos_Param                par;
  82.           sos_Param_List            par_l;
  83.       sos_Method_kind            mk;
  84.           sos_Method_List            md_l;
  85.           sos_Method                md;
  86.           sos_Union_type            utd;
  87.           sos_Typedef_type            ttd;
  88.           sos_Extern_type            xtd;
  89.           sos_Type_name                tn;
  90.           sos_Type_name_List            tn_l;
  91.           sos_Expr                exp;
  92.           sos_Int_expr                ie;
  93.           sos_Identifier            id;
  94.           sos_Expr_List                exp_l;
  95.         } YYSTYPE;
  96.  
  97. static sos_Type_name cfe_fct_or_comp_type;
  98. static sos_Class_type cfe_ct;
  99. static sos_Bool cfe_is_full_type;
  100. static sos_Bool cfe_is_operator;
  101. static sos_Bool cfe_method_is_abstract,
  102.         cfe_method_is_definite, 
  103.         cfe_method_is_local, 
  104.         cfe_method_is_static, 
  105.         cfe_method_is_value;
  106. static sos_Method_kind cfe_method_kind, cfe_set_method_kind;
  107. static sos_Int cfe_component_offset;
  108. static sos_Type_name_List cfe_gen_insts;
  109.  
  110.  
  111. #include "cfe_lex.h"
  112.  
  113. #define yyclearin yychar = -1
  114. #define yyerrok yyerrflag = 0
  115. extern int yychar;
  116. extern int yyerrflag;
  117. #ifndef YYMAXDEPTH
  118. #define YYMAXDEPTH 150
  119. #endif
  120. YYSTYPE yylval, yyval;
  121.  
  122. # line 172 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  123.  
  124. #include <malloc.h>
  125.  
  126. # define YYERRCODE 256
  127.  
  128. # line 824 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  129.  
  130.  
  131. void yyerror (err_msg s) {cfe_error (err_USE, s);}
  132.  
  133. void yyecho () {if (cfe_echo_flag) ECHO;}
  134. int yyexca[] ={
  135. -1, 0,
  136.     270, 1,
  137.     275, 1,
  138.     -2, 0,
  139. -1, 1,
  140.     0, -1,
  141.     -2, 0,
  142. -1, 24,
  143.     260, 13,
  144.     262, 13,
  145.     263, 13,
  146.     273, 13,
  147.     274, 13,
  148.     281, 13,
  149.     -2, 0,
  150. -1, 127,
  151.     257, 57,
  152.     271, 57,
  153.     -2, 0,
  154. -1, 153,
  155.     282, 138,
  156.     -2, 135,
  157.     };
  158. # define YYNPROD 141
  159. # define YYLAST 318
  160. int yyact[]={
  161.  
  162.    170,   169,   192,   205,   197,    18,   191,    50,   175,   187,
  163.    178,   180,   177,   188,   176,   186,    41,    40,   171,   162,
  164.    174,   173,   168,   182,   172,   179,   166,   185,   167,   181,
  165.    189,   190,   165,   184,   164,   183,    17,    19,   161,   144,
  166.    134,    83,   195,   140,    97,   141,    86,    69,   136,   144,
  167.     67,   137,   138,   139,    98,    18,   142,    84,    68,    70,
  168.    125,   110,   203,    96,    85,   108,    68,    12,   201,   145,
  169.    100,    36,    12,    35,    38,   124,    76,    82,   111,   145,
  170.     57,    13,   126,   109,    34,    37,    13,    65,    53,    24,
  171.    199,   202,    27,   200,    64,    52,    22,   108,    88,     6,
  172.     12,    12,   117,    12,    12,   206,   137,   138,   139,   154,
  173.      9,     7,     9,   158,    13,    13,    66,    13,    13,    26,
  174.      3,   133,    44,   152,    45,   107,    81,    11,   143,    10,
  175.    113,    90,    59,    16,   103,    15,    73,    60,    58,     5,
  176.     23,    55,   149,   135,   194,   156,   132,   147,   131,   130,
  177.    127,   123,   116,   118,   101,    87,    21,    71,    54,    28,
  178.     14,    39,    25,    15,    15,    15,    15,    43,    20,     2,
  179.      1,    15,    42,    99,   114,   115,   121,   120,    89,    80,
  180.    163,    15,   151,   148,   146,   102,    72,    63,    46,    47,
  181.     48,    49,    15,    56,    33,    32,    51,    31,    15,    95,
  182.     30,    77,    29,    78,    75,    61,    62,     8,     4,     0,
  183.      0,     0,    15,     0,     0,    91,     0,    74,    93,     0,
  184.     94,    92,     0,    79,     0,     0,     0,    15,     0,   104,
  185.    105,    91,   112,     0,     0,     0,    15,    74,     0,    15,
  186.      0,     0,   122,   104,     0,   119,     0,     0,     0,     0,
  187.      0,     0,   106,    15,   155,     0,   128,     0,     0,   153,
  188.    129,     0,     0,     0,     0,     0,     0,     0,   157,     0,
  189.    159,     0,     0,     0,     0,   160,     0,     0,     0,     0,
  190.      0,   193,     0,   196,   150,   155,   198,     0,     0,     0,
  191.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  192.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  193.      0,     0,     0,     0,     0,     0,     0,   204 };
  194. int yypact[]={
  195.  
  196.   -136, -1000,  -176, -1000,  -159, -1000,  -153,  -154,  -257,  -275,
  197.  -1000, -1000, -1000, -1000, -1000, -1000,  -179,  -154, -1000, -1000,
  198.   -191, -1000,  -151, -1000,  -137,  -189, -1000,  -307, -1000, -1000,
  199.  -1000, -1000,  -295,  -296,  -154,  -154,  -154,  -154,  -154, -1000,
  200.  -1000, -1000,  -305,  -154,  -181, -1000,  -192, -1000, -1000,  -202,
  201.  -1000, -1000,  -154,  -154,  -182,  -193, -1000,  -142,  -227, -1000,
  202.  -1000,  -234, -1000, -1000,  -154,  -154,  -207, -1000,  -154,  -307,
  203.   -154,  -205,  -236, -1000,  -228,  -235, -1000, -1000, -1000, -1000,
  204.  -1000, -1000,  -185, -1000,  -154,  -154,  -307,  -229, -1000,  -239,
  205.  -1000,  -214, -1000, -1000, -1000, -1000,  -154, -1000,  -154,  -190,
  206.  -1000,  -197,  -232, -1000,  -204, -1000,  -222, -1000,  -156, -1000,
  207.   -154,  -156, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  208.   -208,  -233, -1000,  -199, -1000,  -156,  -307,  -216, -1000, -1000,
  209.  -1000,  -157, -1000, -1000, -1000,  -154,  -147, -1000, -1000, -1000,
  210.  -1000,  -226, -1000, -1000, -1000, -1000, -1000, -1000,  -205,  -274,
  211.  -1000, -1000, -1000, -1000,  -276,  -222,  -251, -1000,  -154, -1000,
  212.   -308, -1000,  -154, -1000, -1000, -1000, -1000, -1000, -1000,  -187,
  213.   -183, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  214.  -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  215.  -1000,  -215,  -188, -1000,  -230,  -161,  -309, -1000, -1000, -1000,
  216.  -1000, -1000, -1000, -1000,  -166, -1000, -1000 };
  217. int yypgo[]={
  218.  
  219.      0,   208,   207,   127,   152,   122,   205,   202,   200,   199,
  220.    197,   195,   194,   193,   187,   186,   136,   185,   134,   121,
  221.    184,   183,   182,   180,   179,   126,   178,   131,   125,   132,
  222.    124,   138,   130,   177,   176,   175,   174,   137,   173,   170,
  223.    169,   168,   162,   133,   139,   159,   158,   157,   155,   154,
  224.    153,   151,   150,   149,   148,   147,   146,   145,   144,   143,
  225.    128,   142,   123,   141 };
  226. int yyr1[]={
  227.  
  228.      0,    40,    41,    39,    39,     1,     1,     2,     2,    44,
  229.     44,    43,    43,    42,    42,    42,    45,    45,    45,    45,
  230.     45,    45,     7,    46,    47,    48,    49,    50,     8,    14,
  231.     14,    15,    15,    16,    16,    24,    24,     9,     9,    17,
  232.     17,    18,    18,    51,    52,    51,    53,    53,    53,    57,
  233.     53,    53,    54,    59,    59,    59,    59,    60,    60,    60,
  234.     19,    19,    19,    58,    58,    20,    21,    21,    22,    23,
  235.     23,    23,    23,    23,    23,    23,    23,    23,    23,    23,
  236.     23,    23,    23,    23,    23,    23,    23,    23,    23,    23,
  237.     23,    23,    23,    23,    23,    23,    23,    23,    23,    23,
  238.     25,    25,    26,    26,    27,    27,    38,    38,    28,    28,
  239.     55,    61,    61,    62,    56,    63,    10,    11,    12,    13,
  240.     13,    29,    30,    30,    33,    33,    34,    34,    32,    32,
  241.     36,    35,    37,    31,    31,     5,     6,     6,     4,     3,
  242.      3 };
  243. int yyr2[]={
  244.  
  245.      0,     1,     1,    19,     2,     3,     9,     3,     7,     1,
  246.      7,     0,     2,     0,     4,     2,     2,     2,     2,     4,
  247.      4,     6,    13,     1,     1,     1,     1,     1,    29,     1,
  248.      7,     3,     7,     3,     7,     1,     2,     1,     5,     3,
  249.      7,     2,     9,     1,     1,     6,     4,     4,     2,     1,
  250.      8,     2,     5,     3,     5,     3,     2,     0,     3,     3,
  251.      3,     3,     3,     1,     7,     7,     3,     3,     5,     3,
  252.      3,     3,     3,     3,     5,     5,     3,     3,     3,     3,
  253.      3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
  254.      3,     3,     3,     3,     3,     3,     3,     3,     5,     5,
  255.      5,     7,     3,     7,     9,     7,     1,     3,     1,     5,
  256.      4,     2,     6,     5,     9,     1,    15,     7,     7,     1,
  257.      7,     3,     3,     3,     1,     2,     3,     7,     3,     3,
  258.      3,     3,     9,     3,     7,     3,     3,     7,     3,     2,
  259.      3 };
  260. int yychk[]={
  261.  
  262.  -1000,   -39,   -40,   256,    -1,   -44,   275,   270,    -2,   263,
  263.     -5,    -3,   257,   271,    -4,    -3,   -43,   293,   312,   312,
  264.    -41,   -44,   275,    -5,   280,   -42,   256,   281,   -45,    -7,
  265.     -8,   -10,   -11,   -12,   273,   262,   260,   274,   263,   -43,
  266.    312,   312,   -37,   -29,    -5,   -30,    -4,    -4,    -4,    -4,
  267.    312,    -4,   276,   280,   -46,   -63,   -13,   282,   -31,   -29,
  268.    -37,    -6,    -4,   -14,   276,   280,   258,   277,   293,   281,
  269.    293,   -47,   -15,   -16,    -4,   -31,   283,   -29,   -43,    -4,
  270.    -24,   -25,   282,   277,   293,   292,   281,   -48,   283,   -26,
  271.    -27,   -29,   -16,   -29,   -43,    -9,   292,   283,   293,   -38,
  272.    284,   -49,   -17,   -18,   -29,   -27,    -4,   -28,   287,   280,
  273.    293,   282,   -28,   -32,   -36,   -35,    -4,   258,   -50,   -18,
  274.    -33,   -34,   -32,   -51,   283,   293,   281,   -52,   -32,   -43,
  275.    -53,   -54,   -56,   -19,   256,   -59,   264,   267,   268,   269,
  276.    259,   261,   272,   -60,   265,   295,   -20,   -55,   -21,   -61,
  277.     -4,   -22,   -62,    -3,   266,    -5,   -57,   -29,   260,   -60,
  278.    -25,   312,   293,   -23,   310,   308,   302,   304,   298,   277,
  279.    276,   294,   300,   297,   296,   284,   290,   288,   286,   301,
  280.    287,   305,   299,   311,   309,   303,   291,   285,   289,   306,
  281.    307,   282,   278,   -28,   -58,   293,   -30,   312,   -62,   277,
  282.    276,   283,   279,   292,   -19,   312,   271 };
  283. int yydef[]={
  284.  
  285.     -2,    -2,     9,     4,     0,     5,     0,     0,    11,     0,
  286.      7,   135,   139,   140,     2,   138,     9,     0,    12,    10,
  287.      0,     6,     0,     8,    -2,     0,    15,    11,    14,    16,
  288.     17,    18,     0,     0,     0,     0,     0,     0,     0,     3,
  289.     19,    20,   123,     0,   122,   121,     0,    23,   115,   119,
  290.     21,   117,     0,     0,    29,     0,   118,     0,     0,   133,
  291.    123,     0,   136,    24,     0,     0,     0,   132,     0,    11,
  292.      0,    35,     0,    31,    33,     0,   120,   134,    22,   137,
  293.     25,    36,     0,    30,     0,     0,    11,    37,   100,     0,
  294.    102,   106,    32,    34,   116,    26,     0,   101,     0,   108,
  295.    107,     0,    38,    39,    41,   103,   108,   105,     0,    27,
  296.      0,   124,   104,   109,   128,   129,   130,   131,    43,    40,
  297.      0,   125,   126,    44,    42,     0,    11,    -2,   127,    28,
  298.     45,     0,    48,    49,    51,     0,     0,    60,    61,    62,
  299.     53,    57,    55,    56,    58,    59,    46,    47,     0,     0,
  300.     66,    67,   111,    -2,     0,   108,    63,    52,     0,    54,
  301.      0,   110,     0,    68,    69,    70,    71,    72,    73,    76,
  302.     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
  303.     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
  304.     97,     0,     0,   113,     0,     0,     0,    65,   112,    74,
  305.     75,    98,    99,    50,     0,   114,    64 };
  306. typedef struct { char *t_name; int t_val; } yytoktype;
  307. #ifndef YYDEBUG
  308. #    define YYDEBUG    0    /* don't allow debugging */
  309. #endif
  310.  
  311. #if YYDEBUG
  312.  
  313. yytoktype yytoks[] =
  314. {
  315.     "name_tok",    257,
  316.     "number_tok",    258,
  317.     "abstract_tok",    259,
  318.     "class_tok",    260,
  319.     "definite_tok",    261,
  320.     "enum_tok",    262,
  321.     "extern_tok",    263,
  322.     "friend_tok",    264,
  323.     "local_tok",    265,
  324.     "operator_tok",    266,
  325.     "private_tok",    267,
  326.     "protected_tok",    268,
  327.     "public_tok",    269,
  328.     "schema_tok",    270,
  329.     "set_tok",    271,
  330.     "static_tok",    272,
  331.     "typedef_tok",    273,
  332.     "union_tok",    274,
  333.     "with_tok",    275,
  334.     "l_abr_tok",    276,
  335.     "r_abr_tok",    277,
  336.     "l_br_tok",    278,
  337.     "r_br_tok",    279,
  338.     "l_brc_tok",    280,
  339.     "r_brc_tok",    281,
  340.     "l_par_tok",    282,
  341.     "r_par_tok",    283,
  342.     "ampersand_tok",    284,
  343.     "ampersand_assign_tok",    285,
  344.     "and_tok",    286,
  345.     "assign_tok",    287,
  346.     "bar_tok",    288,
  347.     "bar_assign_tok",    289,
  348.     "circumflex_tok",    290,
  349.     "circumflex_assign_tok",    291,
  350.     "colon_tok",    292,
  351.     "comma_tok",    293,
  352.     "equal_tok",    294,
  353.     "exclam_tok",    295,
  354.     "greater_equal_tok",    296,
  355.     "less_equal_tok",    297,
  356.     "minus_tok",    298,
  357.     "minus_assign_tok",    299,
  358.     "not_equal_tok",    300,
  359.     "or_tok",    301,
  360.     "percent_tok",    302,
  361.     "percent_assign_tok",    303,
  362.     "plus_tok",    304,
  363.     "plus_assign_tok",    305,
  364.     "rshift_assign_tok",    306,
  365.     "lshift_assign_tok",    307,
  366.     "slash_tok",    308,
  367.     "slash_assign_tok",    309,
  368.     "star_tok",    310,
  369.     "star_assign_tok",    311,
  370.     "semicolon_tok",    312,
  371.     "-unknown-",    -1    /* ends search */
  372. };
  373.  
  374. char * yyreds[] =
  375. {
  376.     "-no such reduction-",
  377.     "schema_module : /* empty */",
  378.     "schema_module : imports schema_tok name",
  379.     "schema_module : imports schema_tok name l_brc_tok type_declarations r_brc_tok opt_semicolon",
  380.     "schema_module : error",
  381.     "imports : extern_import",
  382.     "imports : with_tok import_names opt_semicolon extern_import",
  383.     "import_names : name1",
  384.     "import_names : import_names comma_tok name1",
  385.     "extern_import : /* empty */",
  386.     "extern_import : with_tok extern_tok semicolon_tok",
  387.     "opt_semicolon : /* empty */",
  388.     "opt_semicolon : semicolon_tok",
  389.     "type_declarations : /* empty */",
  390.     "type_declarations : type_declarations type_declaration",
  391.     "type_declarations : error",
  392.     "type_declaration : enumeration_declaration",
  393.     "type_declaration : class_declaration",
  394.     "type_declaration : union_declaration",
  395.     "type_declaration : typedef_declaration semicolon_tok",
  396.     "type_declaration : extern_declaration semicolon_tok",
  397.     "type_declaration : typedef_tok generic_instantiation semicolon_tok",
  398.     "enumeration_declaration : enum_tok name l_brc_tok names r_brc_tok opt_semicolon",
  399.     "class_declaration : class_tok name",
  400.     "class_declaration : class_tok name gen_params",
  401.     "class_declaration : class_tok name gen_params opt_parameters",
  402.     "class_declaration : class_tok name gen_params opt_parameters super_classes",
  403.     "class_declaration : class_tok name gen_params opt_parameters super_classes l_brc_tok",
  404.     "class_declaration : class_tok name gen_params opt_parameters super_classes l_brc_tok method_declarations r_brc_tok opt_semicolon",
  405.     "gen_params : /* empty */",
  406.     "gen_params : l_abr_tok gen_params_1 r_abr_tok",
  407.     "gen_params_1 : gen_param",
  408.     "gen_params_1 : gen_params_1 comma_tok gen_param",
  409.     "gen_param : name",
  410.     "gen_param : name colon_tok type_name",
  411.     "opt_parameters : /* empty */",
  412.     "opt_parameters : parameters",
  413.     "super_classes : /* empty */",
  414.     "super_classes : colon_tok type_names_with_params",
  415.     "type_names_with_params : type_name_with_params",
  416.     "type_names_with_params : type_names_with_params comma_tok type_name_with_params",
  417.     "type_name_with_params : type_name",
  418.     "type_name_with_params : type_name l_par_tok exprs r_par_tok",
  419.     "method_declarations : /* empty */",
  420.     "method_declarations : method_declarations",
  421.     "method_declarations : method_declarations method_declaration",
  422.     "method_declaration : fct_or_comp_type function_method",
  423.     "method_declaration : fct_or_comp_type comp_methods",
  424.     "method_declaration : friend",
  425.     "method_declaration : method_kind_spec",
  426.     "method_declaration : method_kind_spec set_method_kind_spec colon_tok",
  427.     "method_declaration : error",
  428.     "fct_or_comp_type : fct_or_comp_kind type_name",
  429.     "fct_or_comp_kind : abstract_tok",
  430.     "fct_or_comp_kind : definite_tok local_or_value_spec",
  431.     "fct_or_comp_kind : static_tok",
  432.     "fct_or_comp_kind : local_or_value_spec",
  433.     "local_or_value_spec : /* empty */",
  434.     "local_or_value_spec : local_tok",
  435.     "local_or_value_spec : exclam_tok",
  436.     "method_kind_spec : private_tok",
  437.     "method_kind_spec : protected_tok",
  438.     "method_kind_spec : public_tok",
  439.     "set_method_kind_spec : /* empty */",
  440.     "set_method_kind_spec : comma_tok method_kind_spec set_tok",
  441.     "function_method : function_name parameters semicolon_tok",
  442.     "function_name : name",
  443.     "function_name : operator",
  444.     "operator : operator_tok operator_string",
  445.     "operator_string : star_tok",
  446.     "operator_string : slash_tok",
  447.     "operator_string : percent_tok",
  448.     "operator_string : plus_tok",
  449.     "operator_string : minus_tok",
  450.     "operator_string : r_abr_tok r_abr_tok",
  451.     "operator_string : l_abr_tok l_abr_tok",
  452.     "operator_string : r_abr_tok",
  453.     "operator_string : l_abr_tok",
  454.     "operator_string : equal_tok",
  455.     "operator_string : not_equal_tok",
  456.     "operator_string : less_equal_tok",
  457.     "operator_string : greater_equal_tok",
  458.     "operator_string : ampersand_tok",
  459.     "operator_string : circumflex_tok",
  460.     "operator_string : bar_tok",
  461.     "operator_string : and_tok",
  462.     "operator_string : or_tok",
  463.     "operator_string : assign_tok",
  464.     "operator_string : plus_assign_tok",
  465.     "operator_string : minus_assign_tok",
  466.     "operator_string : star_assign_tok",
  467.     "operator_string : slash_assign_tok",
  468.     "operator_string : percent_assign_tok",
  469.     "operator_string : circumflex_assign_tok",
  470.     "operator_string : ampersand_assign_tok",
  471.     "operator_string : bar_assign_tok",
  472.     "operator_string : rshift_assign_tok",
  473.     "operator_string : lshift_assign_tok",
  474.     "operator_string : l_par_tok r_par_tok",
  475.     "operator_string : l_br_tok r_br_tok",
  476.     "parameters : l_par_tok r_par_tok",
  477.     "parameters : l_par_tok parameters_1 r_par_tok",
  478.     "parameters_1 : parameter",
  479.     "parameters_1 : parameters_1 comma_tok parameter",
  480.     "parameter : type_name reference name default_expr",
  481.     "parameter : type_name reference default_expr",
  482.     "reference : /* empty */",
  483.     "reference : ampersand_tok",
  484.     "default_expr : /* empty */",
  485.     "default_expr : assign_tok expr",
  486.     "comp_methods : comp_names semicolon_tok",
  487.     "comp_names : comp_name",
  488.     "comp_names : comp_names comma_tok comp_name",
  489.     "comp_name : name1 default_expr",
  490.     "friend : friend_tok class_tok type_name1 semicolon_tok",
  491.     "union_declaration : union_tok name",
  492.     "union_declaration : union_tok name l_brc_tok type_names r_brc_tok opt_semicolon",
  493.     "typedef_declaration : typedef_tok type_name name",
  494.     "extern_declaration : extern_tok name extern_size",
  495.     "extern_size : /* empty */",
  496.     "extern_size : l_par_tok number_tok r_par_tok",
  497.     "type_name : type_name1",
  498.     "type_name1 : name1",
  499.     "type_name1 : generic_instantiation",
  500.     "exprs : /* empty */",
  501.     "exprs : exprs1",
  502.     "exprs1 : expr",
  503.     "exprs1 : exprs1 comma_tok expr",
  504.     "expr : identifier",
  505.     "expr : number",
  506.     "identifier : name",
  507.     "number : number_tok",
  508.     "generic_instantiation : name1 l_abr_tok type_names r_abr_tok",
  509.     "type_names : type_name",
  510.     "type_names : type_names comma_tok type_name",
  511.     "name1 : name_tok_or_keyword",
  512.     "names : name",
  513.     "names : names comma_tok name",
  514.     "name : name_tok_or_keyword",
  515.     "name_tok_or_keyword : name_tok",
  516.     "name_tok_or_keyword : set_tok",
  517. };
  518. #endif /* YYDEBUG */
  519. #line 1 "/usr/lib/yaccpar"
  520. /*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  521.  
  522. /*
  523. ** Skeleton parser driver for yacc output
  524. */
  525.  
  526. /*
  527. ** yacc user known macros and defines
  528. */
  529. #define YYERROR        goto yyerrlab
  530. #define YYACCEPT    { free(yys); free(yyv); return(0); }
  531. #define YYABORT        { free(yys); free(yyv); return(1); }
  532. #define YYBACKUP( newtoken, newvalue )\
  533. {\
  534.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  535.     {\
  536.         yyerror( "syntax error - cannot backup" );\
  537.         goto yyerrlab;\
  538.     }\
  539.     yychar = newtoken;\
  540.     yystate = *yyps;\
  541.     yylval = newvalue;\
  542.     goto yynewstate;\
  543. }
  544. #define YYRECOVERING()    (!!yyerrflag)
  545. #ifndef YYDEBUG
  546. #    define YYDEBUG    1    /* make debugging available */
  547. #endif
  548.  
  549. /*
  550. ** user known globals
  551. */
  552. int yydebug;            /* set to 1 to get debugging */
  553.  
  554. /*
  555. ** driver internal defines
  556. */
  557. #define YYFLAG        (-1000)
  558.  
  559. /*
  560. ** static variables used by the parser
  561. */
  562. static YYSTYPE *yyv;            /* value stack */
  563. static int *yys;            /* state stack */
  564.  
  565. static YYSTYPE *yypv;            /* top of value stack */
  566. static int *yyps;            /* top of state stack */
  567.  
  568. static int yystate;            /* current state */
  569. static int yytmp;            /* extra var (lasts between blocks) */
  570.  
  571. int yynerrs;            /* number of errors */
  572.  
  573. int yyerrflag;            /* error recovery flag */
  574. int yychar;            /* current input token number */
  575.  
  576.  
  577. /*
  578. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  579. */
  580. int
  581. yyparse()
  582. {
  583.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  584.     unsigned yymaxdepth = YYMAXDEPTH;
  585.  
  586.     /*
  587.     ** Initialize externals - yyparse may be called more than once
  588.     */
  589.     yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  590.     yys = (int*)malloc(yymaxdepth*sizeof(int));
  591.     if (!yyv || !yys)
  592.     {
  593.         yyerror( "out of memory" );
  594.         return(1);
  595.     }
  596.     yypv = &yyv[-1];
  597.     yyps = &yys[-1];
  598.     yystate = 0;
  599.     yytmp = 0;
  600.     yynerrs = 0;
  601.     yyerrflag = 0;
  602.     yychar = -1;
  603.  
  604.     goto yystack;
  605.     {
  606.         register YYSTYPE *yy_pv;    /* top of value stack */
  607.         register int *yy_ps;        /* top of state stack */
  608.         register int yy_state;        /* current state */
  609.         register int  yy_n;        /* internal state number info */
  610.  
  611.         /*
  612.         ** get globals into registers.
  613.         ** branch to here only if YYBACKUP was called.
  614.         */
  615.     yynewstate:
  616.         yy_pv = yypv;
  617.         yy_ps = yyps;
  618.         yy_state = yystate;
  619.         goto yy_newstate;
  620.  
  621.         /*
  622.         ** get globals into registers.
  623.         ** either we just started, or we just finished a reduction
  624.         */
  625.     yystack:
  626.         yy_pv = yypv;
  627.         yy_ps = yyps;
  628.         yy_state = yystate;
  629.  
  630.         /*
  631.         ** top of for (;;) loop while no reductions done
  632.         */
  633.     yy_stack:
  634.         /*
  635.         ** put a state and value onto the stacks
  636.         */
  637. #if YYDEBUG
  638.         /*
  639.         ** if debugging, look up token value in list of value vs.
  640.         ** name pairs.  0 and negative (-1) are special values.
  641.         ** Note: linear search is used since time is not a real
  642.         ** consideration while debugging.
  643.         */
  644.         if ( yydebug )
  645.         {
  646.             register int yy_i;
  647.  
  648.             (void)printf( "State %d, token ", yy_state );
  649.             if ( yychar == 0 )
  650.                 (void)printf( "end-of-file\n" );
  651.             else if ( yychar < 0 )
  652.                 (void)printf( "-none-\n" );
  653.             else
  654.             {
  655.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  656.                     yy_i++ )
  657.                 {
  658.                     if ( yytoks[yy_i].t_val == yychar )
  659.                         break;
  660.                 }
  661.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  662.             }
  663.         }
  664. #endif /* YYDEBUG */
  665.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  666.         {
  667.             /*
  668.             ** reallocate and recover.  Note that pointers
  669.             ** have to be reset, or bad things will happen
  670.             */
  671.             int yyps_index = (yy_ps - yys);
  672.             int yypv_index = (yy_pv - yyv);
  673.             int yypvt_index = (yypvt - yyv);
  674.             yymaxdepth += YYMAXDEPTH;
  675.             yyv = (YYSTYPE*)realloc((char*)yyv,
  676.                 yymaxdepth * sizeof(YYSTYPE));
  677.             yys = (int*)realloc((char*)yys,
  678.                 yymaxdepth * sizeof(int));
  679.             if (!yyv || !yys)
  680.             {
  681.                 yyerror( "yacc stack overflow" );
  682.                 return(1);
  683.             }
  684.             yy_ps = yys + yyps_index;
  685.             yy_pv = yyv + yypv_index;
  686.             yypvt = yyv + yypvt_index;
  687.         }
  688.         *yy_ps = yy_state;
  689.         *++yy_pv = yyval;
  690.  
  691.         /*
  692.         ** we have a new state - find out what to do
  693.         */
  694.     yy_newstate:
  695.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  696.             goto yydefault;        /* simple state */
  697. #if YYDEBUG
  698.         /*
  699.         ** if debugging, need to mark whether new token grabbed
  700.         */
  701.         yytmp = yychar < 0;
  702. #endif
  703.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  704.             yychar = 0;        /* reached EOF */
  705. #if YYDEBUG
  706.         if ( yydebug && yytmp )
  707.         {
  708.             register int yy_i;
  709.  
  710.             (void)printf( "Received token " );
  711.             if ( yychar == 0 )
  712.                 (void)printf( "end-of-file\n" );
  713.             else if ( yychar < 0 )
  714.                 (void)printf( "-none-\n" );
  715.             else
  716.             {
  717.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  718.                     yy_i++ )
  719.                 {
  720.                     if ( yytoks[yy_i].t_val == yychar )
  721.                         break;
  722.                 }
  723.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  724.             }
  725.         }
  726. #endif /* YYDEBUG */
  727.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  728.             goto yydefault;
  729.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  730.         {
  731.             yychar = -1;
  732.             yyval = yylval;
  733.             yy_state = yy_n;
  734.             if ( yyerrflag > 0 )
  735.                 yyerrflag--;
  736.             goto yy_stack;
  737.         }
  738.  
  739.     yydefault:
  740.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  741.         {
  742. #if YYDEBUG
  743.             yytmp = yychar < 0;
  744. #endif
  745.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  746.                 yychar = 0;        /* reached EOF */
  747. #if YYDEBUG
  748.             if ( yydebug && yytmp )
  749.             {
  750.                 register int yy_i;
  751.  
  752.                 (void)printf( "Received token " );
  753.                 if ( yychar == 0 )
  754.                     (void)printf( "end-of-file\n" );
  755.                 else if ( yychar < 0 )
  756.                     (void)printf( "-none-\n" );
  757.                 else
  758.                 {
  759.                     for ( yy_i = 0;
  760.                         yytoks[yy_i].t_val >= 0;
  761.                         yy_i++ )
  762.                     {
  763.                         if ( yytoks[yy_i].t_val
  764.                             == yychar )
  765.                         {
  766.                             break;
  767.                         }
  768.                     }
  769.                     (void)printf( "%s\n", yytoks[yy_i].t_name );
  770.                 }
  771.             }
  772. #endif /* YYDEBUG */
  773.             /*
  774.             ** look through exception table
  775.             */
  776.             {
  777.                 register int *yyxi = yyexca;
  778.  
  779.                 while ( ( *yyxi != -1 ) ||
  780.                     ( yyxi[1] != yy_state ) )
  781.                 {
  782.                     yyxi += 2;
  783.                 }
  784.                 while ( ( *(yyxi += 2) >= 0 ) &&
  785.                     ( *yyxi != yychar ) )
  786.                     ;
  787.                 if ( ( yy_n = yyxi[1] ) < 0 )
  788.                     YYACCEPT;
  789.             }
  790.         }
  791.  
  792.         /*
  793.         ** check for syntax error
  794.         */
  795.         if ( yy_n == 0 )    /* have an error */
  796.         {
  797.             /* no worry about speed here! */
  798.             switch ( yyerrflag )
  799.             {
  800.             case 0:        /* new error */
  801.                 yyerror( "syntax error" );
  802.                 goto skip_init;
  803.             yyerrlab:
  804.                 /*
  805.                 ** get globals into registers.
  806.                 ** we have a user generated syntax type error
  807.                 */
  808.                 yy_pv = yypv;
  809.                 yy_ps = yyps;
  810.                 yy_state = yystate;
  811.                 yynerrs++;
  812.             skip_init:
  813.             case 1:
  814.             case 2:        /* incompletely recovered error */
  815.                     /* try again... */
  816.                 yyerrflag = 3;
  817.                 /*
  818.                 ** find state where "error" is a legal
  819.                 ** shift action
  820.                 */
  821.                 while ( yy_ps >= yys )
  822.                 {
  823.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  824.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  825.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  826.                         /*
  827.                         ** simulate shift of "error"
  828.                         */
  829.                         yy_state = yyact[ yy_n ];
  830.                         goto yy_stack;
  831.                     }
  832.                     /*
  833.                     ** current state has no shift on
  834.                     ** "error", pop stack
  835.                     */
  836. #if YYDEBUG
  837. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  838.                     if ( yydebug )
  839.                         (void)printf( _POP_, *yy_ps,
  840.                             yy_ps[-1] );
  841. #    undef _POP_
  842. #endif
  843.                     yy_ps--;
  844.                     yy_pv--;
  845.                 }
  846.                 /*
  847.                 ** there is no state on stack with "error" as
  848.                 ** a valid shift.  give up.
  849.                 */
  850.                 YYABORT;
  851.             case 3:        /* no shift yet; eat a token */
  852. #if YYDEBUG
  853.                 /*
  854.                 ** if debugging, look up token in list of
  855.                 ** pairs.  0 and negative shouldn't occur,
  856.                 ** but since timing doesn't matter when
  857.                 ** debugging, it doesn't hurt to leave the
  858.                 ** tests here.
  859.                 */
  860.                 if ( yydebug )
  861.                 {
  862.                     register int yy_i;
  863.  
  864.                     (void)printf( "Error recovery discards " );
  865.                     if ( yychar == 0 )
  866.                         (void)printf( "token end-of-file\n" );
  867.                     else if ( yychar < 0 )
  868.                         (void)printf( "token -none-\n" );
  869.                     else
  870.                     {
  871.                         for ( yy_i = 0;
  872.                             yytoks[yy_i].t_val >= 0;
  873.                             yy_i++ )
  874.                         {
  875.                             if ( yytoks[yy_i].t_val
  876.                                 == yychar )
  877.                             {
  878.                                 break;
  879.                             }
  880.                         }
  881.                         (void)printf( "token %s\n",
  882.                             yytoks[yy_i].t_name );
  883.                     }
  884.                 }
  885. #endif /* YYDEBUG */
  886.                 if ( yychar == 0 )    /* reached EOF. quit */
  887.                     YYABORT;
  888.                 yychar = -1;
  889.                 goto yy_newstate;
  890.             }
  891.         }/* end if ( yy_n == 0 ) */
  892.         /*
  893.         ** reduction by production yy_n
  894.         ** put stack tops, etc. so things right after switch
  895.         */
  896. #if YYDEBUG
  897.         /*
  898.         ** if debugging, print the string that is the user's
  899.         ** specification of the reduction which is just about
  900.         ** to be done.
  901.         */
  902.         if ( yydebug )
  903.             (void)printf( "Reduce by (%d) \"%s\"\n",
  904.                 yy_n, yyreds[ yy_n ] );
  905. #endif
  906.         yytmp = yy_n;            /* value to switch over */
  907.         yypvt = yy_pv;            /* $vars top of value stack */
  908.         /*
  909.         ** Look in goto table for next state
  910.         ** Sorry about using yy_state here as temporary
  911.         ** register variable, but why not, if it works...
  912.         ** If yyr2[ yy_n ] doesn't have the low order bit
  913.         ** set, then there is no action to be done for
  914.         ** this reduction.  So, no saving & unsaving of
  915.         ** registers done.  The only difference between the
  916.         ** code just after the if and the body of the if is
  917.         ** the goto yy_stack in the body.  This way the test
  918.         ** can be made before the choice of what to do is needed.
  919.         */
  920.         {
  921.             /* length of production doubled with extra bit */
  922.             register int yy_len = yyr2[ yy_n ];
  923.  
  924.             if ( !( yy_len & 01 ) )
  925.             {
  926.                 yy_len >>= 1;
  927.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  928.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  929.                     *( yy_ps -= yy_len ) + 1;
  930.                 if ( yy_state >= YYLAST ||
  931.                     yychk[ yy_state =
  932.                     yyact[ yy_state ] ] != -yy_n )
  933.                 {
  934.                     yy_state = yyact[ yypgo[ yy_n ] ];
  935.                 }
  936.                 goto yy_stack;
  937.             }
  938.             yy_len >>= 1;
  939.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  940.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  941.                 *( yy_ps -= yy_len ) + 1;
  942.             if ( yy_state >= YYLAST ||
  943.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  944.             {
  945.                 yy_state = yyact[ yypgo[ yy_n ] ];
  946.             }
  947.         }
  948.                     /* save until reenter driver code */
  949.         yystate = yy_state;
  950.         yyps = yy_ps;
  951.         yypv = yy_pv;
  952.     }
  953.     /*
  954.     ** code supplied by user is placed in this switch
  955.     */
  956.     switch( yytmp )
  957.     {
  958.         
  959. case 1:
  960. # line 178 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  961. {  cfe_cnt = sos_Container::create ();
  962.          cfe_ct = sos_Class_type::make (NO_OBJECT);
  963.          cfe_schema = sos_Schema_module::create (cfe_cnt);
  964.          cfe_gen_insts = sos_Type_name_List::create (TEMP_CONTAINER);
  965.       } break;
  966. case 2:
  967. # line 186 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  968. {  cfe_schema.set_imports (yypvt[-2].imp);
  969.          cfe_schema.set_name (yypvt[-0].str);
  970.          cfe_init(yypvt[-0].str, yypvt[-2].imp);
  971.           } break;
  972. case 3:
  973. # line 194 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  974. {  cfe_check_schema ();
  975.          cfe_check_generic_instantiations (cfe_gen_insts);
  976.          cfe_finalize();
  977.       } break;
  978. case 5:
  979. # line 202 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  980. {  yyval.imp = sos_Imports::create (cfe_cnt); } break;
  981. case 6:
  982. # line 207 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  983. {  yyval.imp = yypvt[-2].imp; } break;
  984. case 7:
  985. # line 212 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  986. {  yyval.imp = sos_Imports::create (cfe_cnt);
  987.        cfe_import_module (yyval.imp, yypvt[-0].str);
  988.     } break;
  989. case 8:
  990. # line 218 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  991. {  yyval.imp = yypvt[-2].imp;
  992.        cfe_import_module (yyval.imp, yypvt[-0].str);
  993.     } break;
  994. case 9:
  995. # line 223 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  996. {  cfe_schema.set_has_external_import (FALSE);  } break;
  997. case 10:
  998. # line 227 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  999. {  cfe_schema.set_has_external_import (TRUE);  } break;
  1000. case 22:
  1001. # line 260 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1002. {  cfe_check_type (yypvt[-4].str);
  1003.             yyval.etd = sos_Enum_type::create (cfe_cnt);
  1004.         yyval.etd.set_name(yypvt[-4].str);
  1005.         yyval.etd.set_object_size (cfe_enum_size (yypvt[-2].str_l.card()));
  1006.         yyval.etd.set_literals(yypvt[-2].str_l);
  1007.  
  1008.             cfe_type_tab.insert (yypvt[-4].str, yyval.etd);
  1009.             cfe_types.append (yyval.etd);
  1010.      } break;
  1011. case 23:
  1012. # line 274 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1013. {  cfe_ct = sos_Class_type::create (cfe_cnt);
  1014.          cfe_ct.set_name (yypvt[-0].str);
  1015.          cfe_make_class_type (yypvt[-0].str, cfe_ct);
  1016.          cfe_type_tab.insert (yypvt[-0].str, cfe_ct);
  1017.       } break;
  1018. case 24:
  1019. # line 280 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1020. {  cfe_ct.set_gen_params(yypvt[-0].gp_l); } break;
  1021. case 25:
  1022. # line 282 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1023. {  cfe_ct.set_create_params(yypvt[-0].par_l); } break;
  1024. case 26:
  1025. # line 284 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1026. {  cfe_ct.set_super_classes(yypvt[-0].tn_l);
  1027.          cfe_set_super_closure (cfe_ct);
  1028.       } break;
  1029. case 27:
  1030. # line 288 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1031. {  cfe_ct.set_friends
  1032.         (sos_Type_name_List::create (cfe_cnt, FALSE));
  1033.          cfe_init_methods (cfe_ct);
  1034.          cfe_component_offset = 0;
  1035.       } break;
  1036. case 28:
  1037. # line 296 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1038. {  yyval.ctd = cfe_ct;
  1039.          cfe_set_offsets_and_size (cfe_ct, cfe_component_offset);
  1040.          cfe_set_inherited_methods (cfe_ct);
  1041.          cfe_complete_methods (cfe_ct);
  1042.              yyval.ctd.set_generated_from
  1043.         (sos_Generic_instantiation::make(NO_OBJECT));
  1044.          cfe_set_root_name (cfe_ct);
  1045.              cfe_types.append (yyval.ctd);
  1046.          cfe_ct = sos_Class_type::make (NO_OBJECT);
  1047.       } break;
  1048. case 29:
  1049. # line 308 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1050. {  yyval.gp_l = sos_Gen_param_List::make (NO_OBJECT); } break;
  1051. case 30:
  1052. # line 312 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1053. {  if (cfe_is_full_type)
  1054.                      cfe_error (err_USE, err_CFE_FULL_GENERIC);
  1055.           yyval.gp_l = yypvt[-1].gp_l;
  1056.            } break;
  1057. case 31:
  1058. # line 319 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1059. {  yyval.gp_l = sos_Gen_param_List::create (cfe_cnt, FALSE);
  1060.           yyval.gp_l.append (yypvt[-0].gp);
  1061.            } break;
  1062. case 32:
  1063. # line 325 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1064. {  if (cfe_lookup_gen_params (yypvt[-0].gp.get_name(), yypvt[-2].gp_l) != NO_OBJECT)
  1065.                      cfe_error (err_USE, err_CFE_AMBIGUOUS_GEN_PARAMS);
  1066.                   yypvt[-2].gp_l.append (yypvt[-0].gp);
  1067.                   yyval.gp_l = yypvt[-2].gp_l;
  1068.            } break;
  1069. case 33:
  1070. # line 333 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1071. {  yyval.gp = sos_Gen_param::create (cfe_cnt);
  1072.            yyval.gp.set_name (yypvt[-0].str);
  1073.            yyval.gp.set_super_class (sos_Type_name::make(NO_OBJECT));
  1074.         } break;
  1075. case 34:
  1076. # line 340 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1077. {  yyval.gp = sos_Gen_param::create (cfe_cnt);
  1078.            yyval.gp.set_name (yypvt[-2].str);
  1079.            yyval.gp.set_super_class (yypvt[-0].tn);
  1080.         } break;
  1081. case 35:
  1082. # line 347 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1083. {  yyval.par_l = sos_Param_List::make (NO_OBJECT);
  1084.     } break;
  1085. case 37:
  1086. # line 353 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1087. {  yyval.tn_l = sos_Type_name_List::create (cfe_cnt, FALSE);
  1088. #ifdef ATT
  1089.        if (cfe_ct.operator!=(cfe_get_object_type()))
  1090. #else
  1091.        if (cfe_ct != cfe_get_object_type())
  1092. #endif
  1093.           yyval.tn_l.append (cfe_get_object_type());
  1094.     } break;
  1095. case 38:
  1096. # line 363 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1097. {  cfe_check_super_classes (cfe_ct, yypvt[-0].tn_l);
  1098.            yyval.tn_l = yypvt[-0].tn_l;
  1099.         } break;
  1100. case 39:
  1101. # line 369 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1102. {  yyval.tn_l = sos_Type_name_List::create (cfe_cnt, FALSE);
  1103.                 yyval.tn_l.append (yypvt[-0].tn);
  1104.              } break;
  1105. case 40:
  1106. # line 375 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1107. {  yypvt[-2].tn_l.append (yypvt[-0].tn);
  1108.                 yyval.tn_l = yypvt[-2].tn_l;
  1109.              } break;
  1110. case 42:
  1111. # line 386 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1112. {  sos_Type_with_params twp = sos_Type_with_params::create (cfe_cnt);
  1113.        twp.set_type_name (yypvt[-3].tn);
  1114.        twp.set_params (yypvt[-1].exp_l);
  1115.        yyval.tn = twp;
  1116.     } break;
  1117. case 43:
  1118. # line 394 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1119. {  cfe_method_kind     = sos_PRIVATE;
  1120.        cfe_set_method_kind = sos_PRIVATE;
  1121.     } break;
  1122. case 44:
  1123. # line 398 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1124. {  cfe_method_is_abstract = FALSE;
  1125.        cfe_method_is_definite = FALSE;
  1126.        cfe_method_is_local    = FALSE;
  1127.        cfe_method_is_static   = FALSE;
  1128.        cfe_method_is_value    = FALSE;
  1129.     } break;
  1130. case 49:
  1131. # line 412 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1132. {  cfe_method_kind = yypvt[-0].mk; } break;
  1133. case 52:
  1134. # line 420 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1135. { cfe_fct_or_comp_type = yypvt[-0].tn; } break;
  1136. case 53:
  1137. # line 425 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1138. {  cfe_method_is_abstract = TRUE; } break;
  1139. case 54:
  1140. # line 428 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1141. {  cfe_method_is_definite = TRUE; } break;
  1142. case 55:
  1143. # line 430 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1144. {  cfe_method_is_static = TRUE; } break;
  1145. case 58:
  1146. # line 437 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1147. {  cfe_method_is_local = TRUE; } break;
  1148. case 59:
  1149. # line 439 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1150. {  cfe_method_is_value = TRUE; } break;
  1151. case 60:
  1152. # line 444 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1153. {  yyval.mk = sos_PRIVATE; } break;
  1154. case 61:
  1155. # line 446 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1156. {  yyval.mk = sos_PROTECTED; } break;
  1157. case 62:
  1158. # line 448 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1159. {  yyval.mk = sos_PUBLIC; } break;
  1160. case 63:
  1161. # line 452 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1162. {  cfe_set_method_kind = cfe_method_kind; } break;
  1163. case 64:
  1164. # line 456 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1165. {  cfe_set_method_kind = yypvt[-1].mk; } break;
  1166. case 65:
  1167. # line 463 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1168. {  if (cfe_method_is_definite)
  1169.               cfe_error(err_WNG, err_CFE_NO_DEFINITE_FUNCS);
  1170.            if (cfe_method_is_local)
  1171.               cfe_error(err_USE, err_CFE_NO_LOCAL_FUNCS);
  1172.            if (cfe_method_is_value)
  1173.               cfe_error(err_USE, err_CFE_NO_VALUE_FUNCS);
  1174.               
  1175.            yyval.md = sos_Method::create (cfe_cnt);
  1176.        yyval.md.set_name (yypvt[-2].str);
  1177.        yyval.md.set_is_abstract (cfe_method_is_abstract);
  1178.        if (cfe_method_is_abstract)
  1179.           cfe_ct.set_is_abstract (TRUE);
  1180.        yyval.md.set_is_static (cfe_method_is_static);
  1181.        yyval.md.set_is_operator (cfe_is_operator);
  1182.        yyval.md.set_is_predefined (FALSE);
  1183.        yyval.md.set_params (yypvt[-1].par_l);
  1184.        yyval.md.set_result_type (cfe_fct_or_comp_type);
  1185.        yyval.md.set_kind (cfe_method_kind);
  1186.        yyval.md.set_defined_in (cfe_ct);
  1187.        yyval.md.set_generated_from (sos_Method::make(NO_OBJECT));
  1188.        yyval.md.set_impls (sos_Method_impl_List::make (NO_OBJECT));
  1189.        cfe_append_method (cfe_ct, yyval.md);
  1190.      } break;
  1191. case 66:
  1192. # line 489 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1193. {  yyval.str = yypvt[-0].str;
  1194.            cfe_is_operator = FALSE;
  1195.         } break;
  1196. case 67:
  1197. # line 493 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1198. {  yyval.str = yypvt[-0].str;
  1199.            cfe_is_operator = TRUE;
  1200.         } break;
  1201. case 68:
  1202. # line 500 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1203. {  yyval.str = yypvt[-0].str; } break;
  1204. case 69:
  1205. # line 505 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1206. {  yyval.str = smg_String ("*").make_String (cfe_cnt); } break;
  1207. case 70:
  1208. # line 507 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1209. {  yyval.str = smg_String ("/").make_String (cfe_cnt); } break;
  1210. case 71:
  1211. # line 509 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1212. {  yyval.str = smg_String ("%").make_String (cfe_cnt); } break;
  1213. case 72:
  1214. # line 511 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1215. {  yyval.str = smg_String ("+").make_String (cfe_cnt); } break;
  1216. case 73:
  1217. # line 513 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1218. {  yyval.str = smg_String ("-").make_String (cfe_cnt); } break;
  1219. case 74:
  1220. # line 515 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1221. {  yyval.str = smg_String (">>").make_String (cfe_cnt); } break;
  1222. case 75:
  1223. # line 517 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1224. {  yyval.str = smg_String ("<<").make_String (cfe_cnt); } break;
  1225. case 76:
  1226. # line 519 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1227. {  yyval.str = smg_String (">").make_String (cfe_cnt); } break;
  1228. case 77:
  1229. # line 521 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1230. {  yyval.str = smg_String ("<").make_String (cfe_cnt); } break;
  1231. case 78:
  1232. # line 523 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1233. {  yyval.str = smg_String ("==").make_String (cfe_cnt); } break;
  1234. case 79:
  1235. # line 525 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1236. {  yyval.str = smg_String ("!=").make_String (cfe_cnt); } break;
  1237. case 80:
  1238. # line 527 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1239. {  yyval.str = smg_String ("<=").make_String (cfe_cnt); } break;
  1240. case 81:
  1241. # line 529 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1242. {  yyval.str = smg_String (">=").make_String (cfe_cnt); } break;
  1243. case 82:
  1244. # line 531 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1245. {  yyval.str = smg_String ("&").make_String (cfe_cnt); } break;
  1246. case 83:
  1247. # line 533 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1248. {  yyval.str = smg_String ("^").make_String (cfe_cnt); } break;
  1249. case 84:
  1250. # line 535 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1251. {  yyval.str = smg_String ("|").make_String (cfe_cnt); } break;
  1252. case 85:
  1253. # line 537 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1254. {  yyval.str = smg_String ("&&").make_String (cfe_cnt); } break;
  1255. case 86:
  1256. # line 539 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1257. {  yyval.str = smg_String ("||").make_String (cfe_cnt); } break;
  1258. case 87:
  1259. # line 541 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1260. {  yyval.str = smg_String ("=").make_String (cfe_cnt); } break;
  1261. case 88:
  1262. # line 543 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1263. {  yyval.str = smg_String ("+=").make_String (cfe_cnt); } break;
  1264. case 89:
  1265. # line 545 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1266. {  yyval.str = smg_String ("-=").make_String (cfe_cnt); } break;
  1267. case 90:
  1268. # line 547 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1269. {  yyval.str = smg_String ("*=").make_String (cfe_cnt); } break;
  1270. case 91:
  1271. # line 549 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1272. {  yyval.str = smg_String ("/=").make_String (cfe_cnt); } break;
  1273. case 92:
  1274. # line 551 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1275. {  yyval.str = smg_String ("%=").make_String (cfe_cnt); } break;
  1276. case 93:
  1277. # line 553 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1278. {  yyval.str = smg_String ("^=").make_String (cfe_cnt); } break;
  1279. case 94:
  1280. # line 555 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1281. {  yyval.str = smg_String ("&=").make_String (cfe_cnt); } break;
  1282. case 95:
  1283. # line 557 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1284. {  yyval.str = smg_String ("|=").make_String (cfe_cnt); } break;
  1285. case 96:
  1286. # line 559 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1287. {  yyval.str = smg_String (">>=").make_String (cfe_cnt); } break;
  1288. case 97:
  1289. # line 561 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1290. {  yyval.str = smg_String ("<<=").make_String (cfe_cnt); } break;
  1291. case 98:
  1292. # line 563 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1293. {  yyval.str = smg_String ("()").make_String (cfe_cnt); } break;
  1294. case 99:
  1295. # line 565 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1296. {  yyval.str = smg_String ("[]").make_String (cfe_cnt); } break;
  1297. case 100:
  1298. # line 571 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1299. {  yyval.par_l = sos_Param_List::create (cfe_cnt, FALSE); } break;
  1300. case 101:
  1301. # line 575 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1302. {  yyval.par_l = yypvt[-1].par_l; } break;
  1303. case 102:
  1304. # line 580 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1305. {  yyval.par_l = sos_Param_List::create (cfe_cnt, FALSE);
  1306.        yyval.par_l.append (yypvt[-0].par);
  1307.         } break;
  1308. case 103:
  1309. # line 586 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1310. {  yypvt[-2].par_l.append (yypvt[-0].par);
  1311.            yyval.par_l = yypvt[-2].par_l;
  1312.         } break;
  1313. case 104:
  1314. # line 596 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1315. {  yyval.par = sos_Param::create (cfe_cnt);
  1316.        yyval.par.set_name (yypvt[-1].str);
  1317.        yyval.par.set_type_name (yypvt[-3].tn);
  1318.        yyval.par.set_default_expr (yypvt[-0].exp);
  1319.        yyval.par.set_is_ref (yypvt[-2].b);
  1320.     } break;
  1321. case 105:
  1322. # line 605 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1323. {  yyval.par = sos_Param::create (cfe_cnt);
  1324.        yyval.par.set_name (sos_String::make (NO_OBJECT));
  1325.        yyval.par.set_type_name (yypvt[-2].tn);
  1326.        yyval.par.set_default_expr (yypvt[-0].exp);
  1327.        yyval.par.set_is_ref (yypvt[-1].b);
  1328.     } break;
  1329. case 106:
  1330. # line 614 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1331. { yyval.b = FALSE; } break;
  1332. case 107:
  1333. # line 616 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1334. { yyval.b = TRUE; } break;
  1335. case 108:
  1336. # line 621 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1337. {  yyval.exp = sos_Expr::make (NO_OBJECT); } break;
  1338. case 109:
  1339. # line 624 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1340. {  yyval.exp = yypvt[-0].exp; } break;
  1341. case 113:
  1342. # line 640 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1343. {  if (cfe_method_is_definite)
  1344.               cfe_error(err_WNG, err_CFE_NO_DEFINITE_COMPS);
  1345.            if (cfe_method_is_static)
  1346.               cfe_error(err_USE, err_CFE_NO_STATIC_COMPS);
  1347.            if (cfe_method_is_value)
  1348.               cfe_error(err_USE, err_CFE_NO_VALUE_COMPS);
  1349.               
  1350.            cfe_append_comp_methods
  1351.           (cfe_ct, cfe_fct_or_comp_type, yypvt[-1].str, yypvt[-0].exp,
  1352.            cfe_method_kind, cfe_set_method_kind,
  1353.            cfe_method_is_value, cfe_method_is_local,
  1354.            cfe_component_offset);
  1355.            if (yypvt[-0].exp != NO_OBJECT)
  1356.           cfe_ct.set_has_init_comps (TRUE);
  1357.         } break;
  1358. case 114:
  1359. # line 661 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1360. {  cfe_ct.get_friends().append (yypvt[-1].tn);
  1361.      } break;
  1362. case 115:
  1363. # line 668 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1364. {  cfe_check_type (yypvt[-0].str); } break;
  1365. case 116:
  1366. # line 673 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1367. {  yyval.utd = sos_Union_type::create (cfe_cnt);
  1368.            yyval.utd.set_name (yypvt[-5].str);
  1369.            yyval.utd.set_uniteds (yypvt[-2].tn_l);
  1370.  
  1371.            cfe_type_tab.insert (yypvt[-5].str, yyval.utd);
  1372.            cfe_types.append (yyval.utd);
  1373.     } break;
  1374. case 117:
  1375. # line 686 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1376. {  yyval.ttd = sos_Typedef_type::create (cfe_cnt);
  1377.              yyval.ttd.set_name (yypvt[-0].str);
  1378.          yyval.ttd.set_type_name (yypvt[-1].tn);
  1379.          if (yypvt[-1].tn.make_base_type().has_type (sos_Class_type_type))
  1380.          {  sos_Class_type ct = sos_Class_type::make (yypvt[-1].tn.make_base_type());
  1381.         cfe_make_class_type (yypvt[-0].str, ct);
  1382.          }
  1383.          else
  1384.         cfe_check_type (yypvt[-0].str);
  1385.  
  1386.              cfe_type_tab.insert (yypvt[-0].str, yyval.ttd);
  1387.              cfe_types.append (yyval.ttd);
  1388.       } break;
  1389. case 118:
  1390. # line 705 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1391. {  cfe_check_type (yypvt[-1].str);
  1392.          yyval.xtd = sos_Extern_type::create (cfe_cnt);
  1393.          yyval.xtd.set_name (yypvt[-1].str);
  1394.          yyval.xtd.set_object_size (yypvt[-0].i);
  1395.          cfe_schema.set_has_external_types (TRUE);
  1396.  
  1397.              cfe_type_tab.insert (yypvt[-1].str, yyval.xtd);
  1398.              cfe_types.append (yyval.xtd);
  1399.       } break;
  1400. case 119:
  1401. # line 716 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1402. { yyval.i = 4; } break;
  1403. case 120:
  1404. # line 720 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1405. { yyval.i = yypvt[-1].i;
  1406.         if (yypvt[-1].i > SOS_ID_SIZE)
  1407.         {  cfe_error (err_USE, err_CFE_INVALID_EXT_SIZE); }
  1408.           } break;
  1409. case 121:
  1410. # line 727 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1411. {  yyval.tn = yypvt[-0].tn;
  1412.            cfe_check_no_generic (yypvt[-0].tn);
  1413.         } break;
  1414. case 122:
  1415. # line 733 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1416. {  yyval.tn = cfe_lookup_type_name (cfe_ct, yypvt[-0].str); } break;
  1417. case 123:
  1418. # line 735 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1419. {  yyval.tn = yypvt[-0].tn; } break;
  1420. case 124:
  1421. # line 738 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1422. {  yyval.exp_l = sos_Expr_List::create (cfe_cnt, FALSE); } break;
  1423. case 126:
  1424. # line 743 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1425. {  yyval.exp_l = sos_Expr_List::create (cfe_cnt, FALSE);
  1426.         yyval.exp_l.append (yypvt[-0].exp);
  1427.      } break;
  1428. case 127:
  1429. # line 749 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1430. {  yypvt[-2].exp_l.append (yypvt[-0].exp);
  1431.         yyval.exp_l = yypvt[-2].exp_l;
  1432.      } break;
  1433. case 128:
  1434. # line 755 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1435. {  yyval.exp = yypvt[-0].id; } break;
  1436. case 129:
  1437. # line 757 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1438. {  yyval.exp = yypvt[-0].ie; } break;
  1439. case 130:
  1440. # line 761 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1441. {  yyval.id = sos_Identifier::create (cfe_cnt);
  1442.             yyval.id.set_id(yypvt[-0].str);
  1443.          } break;
  1444. case 131:
  1445. # line 767 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1446. {  yyval.ie = sos_Int_expr::create (cfe_cnt);
  1447.         yyval.ie.set_value(yypvt[-0].i);
  1448.      } break;
  1449. case 132:
  1450. # line 777 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1451. {  yyval.tn = cfe_lookup_generic_instantiation (yypvt[-3].str, yypvt[-1].tn_l, cfe_types);
  1452.        cfe_gen_insts.append (yyval.tn);
  1453.     } break;
  1454. case 133:
  1455. # line 784 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1456. {  yyval.tn_l = sos_Type_name_List::create (cfe_cnt, FALSE);
  1457.        yyval.tn_l.append (yypvt[-0].tn);
  1458.     } break;
  1459. case 134:
  1460. # line 790 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1461. {  yypvt[-2].tn_l.append (yypvt[-0].tn);
  1462.        yyval.tn_l = yypvt[-2].tn_l;
  1463.     } break;
  1464. case 135:
  1465. # line 796 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1466. {  yyval.str = smg_String (yypvt[-0].s).make_String (TEMP_CONTAINER);
  1467.        delete yypvt[-0].s;
  1468.         } break;
  1469. case 136:
  1470. # line 802 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1471. {  yyval.str_l = sos_String_List::create (cfe_cnt, FALSE);
  1472.        yyval.str_l.append (yypvt[-0].str);
  1473.     } break;
  1474. case 137:
  1475. # line 808 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1476. {  yypvt[-2].str_l.append (yypvt[-0].str);
  1477.        yyval.str_l = yypvt[-2].str_l;
  1478.     } break;
  1479. case 138:
  1480. # line 814 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1481. {  yyval.str = smg_String (yypvt[-0].s).make_String (cfe_cnt);
  1482.       delete yypvt[-0].s;
  1483.        } break;
  1484. case 140:
  1485. # line 821 "/fzi/prost/stone/SOS3-2/src/cfe/cfe.y"
  1486. {  yyval.s = strdup ("set"); } break;
  1487.     }
  1488.     goto yystack;        /* reset registers in driver code */
  1489. }
  1490.